// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package de.greenrobot.dao.query;
import android.database.sqlite.SQLiteDatabase;
import de.greenrobot.dao.AbstractDao;
import de.greenrobot.dao.DaoException;
import de.greenrobot.dao.InternalQueryDaoAccess;
import java.util.List;
// Referenced classes of package de.greenrobot.dao.query:
// AbstractQuery, LazyList, CloseableListIterator
public class Query extends AbstractQuery
{
private final int limitPosition;
private final int offsetPosition;
private final QueryData queryData;
private Query(QueryData querydata, AbstractDao abstractdao, String s, String as[], int i, int j)
{
super(abstractdao, s, as);
queryData = querydata;
limitPosition = i;
offsetPosition = j;
}
Query(QueryData querydata, AbstractDao abstractdao, String s, String as[], int i, int j, _cls1 _pcls1)
{
this(querydata, abstractdao, s, as, i, j);
}
static Query create(AbstractDao abstractdao, String s, Object aobj[], int i, int j)
{
return (Query)(new QueryData(abstractdao, s, toStringArray(aobj), i, j)).forCurrentThread();
}
public static Query internalCreate(AbstractDao abstractdao, String s, Object aobj[])
{
return create(abstractdao, s, aobj, -1, -1);
}
public Query forCurrentThread()
{
return (Query)queryData.forCurrentThread(this);
}
public List list()
{
checkThread();
android.database.Cursor cursor = dao.getDatabase().rawQuery(sql, parameters);
return daoAccess.loadAllAndCloseCursor(cursor);
}
public CloseableListIterator listIterator()
{
return listLazyUncached().listIteratorAutoClose();
}
public LazyList listLazy()
{
checkThread();
android.database.Cursor cursor = dao.getDatabase().rawQuery(sql, parameters);
return new LazyList(daoAccess, cursor, true);
}
public LazyList listLazyUncached()
{
checkThread();
android.database.Cursor cursor = dao.getDatabase().rawQuery(sql, parameters);
return new LazyList(daoAccess, cursor, false);
}
public void setLimit(int i)
{
checkThread();
if (limitPosition == -1)
{
throw new IllegalStateException("Limit must be set with QueryBuilder before it can be used here");
} else
{
parameters[limitPosition] = Integer.toString(i);
return;
}
}
public void setOffset(int i)
{
checkThread();
if (offsetPosition == -1)
{
throw new IllegalStateException("Offset must be set with QueryBuilder before it can be used here");
} else
{
parameters[offsetPosition] = Integer.toString(i);
return;
}
}
public void setParameter(int i, Object obj)
{
if (i >= 0 && (i == limitPosition || i == offsetPosition))
{
throw new IllegalArgumentException((new StringBuilder()).append("Illegal parameter index: ").append(i).toString());
} else
{
super.setParameter(i, obj);
return;
}
}
public Object unique()
{
checkThread();
android.database.Cursor cursor = dao.getDatabase().rawQuery(sql, parameters);
return daoAccess.loadUniqueAndCloseCursor(cursor);
}
public Object uniqueOrThrow()
{
Object obj = unique();
if (obj == null)
{
throw new DaoException("No entity found for query");
} else
{
return obj;
}
}
private class QueryData extends AbstractQueryData
{
private final int limitPosition;
private final int offsetPosition;
protected volatile AbstractQuery createQuery()
{
return createQuery();
}
protected Query createQuery()
{
return new Query(this, dao, sql, (String[])initialValues.clone(), limitPosition, offsetPosition, null);
}
QueryData(AbstractDao abstractdao, String s, String as[], int i, int j)
{
super(abstractdao, s, as);
limitPosition = i;
offsetPosition = j;
}
}
}